<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>函数</title>
</head>
<body>

</body>
<script>


     /**
      * 1. 定义和调用
      *    形式参数 和 实际参数
      *
      * */

      function foo(){

        var num1 =1;
        var num2=2;

        console.log(num1+num2);

     }

     function plus(num1,num2){
         console.log(num1+num2);
     }

     function  plus2(num1,num2){
        return num1+num2;
     }

     // foo();
     // plus(1,2);
     // plus('ww','w');
     // plus('ww',1);
     // plus(null,undefined);
     // plus(1,undefined);
     // plus(1,null);
     //
     // var result = plus2(12,1);
     // console.log(result);

     /**
      *   2. 函数作为变量
      *     1) 函数变量
      *     2) 函数作为参数
      * */

     var too=function (num1,num2){
           //step3 真正地执行
        console.log('这一个函数变量！');
        console.log('这连个数字的差是:'+(num1-num2));
     }

    // too();

     // 回调函数直接处理参数
     function too2(num1,num2,callback){

       return   callback(num1,num2);  // step2
     }


     /**
      *    num1,num2,callback
      *    被实际参数替换
      *    num1=1，num2=3，callback=too;
      *
      *    too(1,3);
      *
      *    如果一个函数的参数列表中有回调函数
      *    只有等到真正执行的时候
      *    才能知道回调函数的运行逻辑
      *
      * */
      too2(1,3,too); // step1
      too2(1,3,function (num1,num2){
           console.log("这两个数的积是:"+(num1*num2));
      })


     // 回调处理计算结果
     function multiple(num1,num2,callback){
          var result = num1*num2 ;

          callback(result);
     }


     multiple(12,12,function (result){
          alert(result);
     })



</script>
</html>